#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

int is_running = 1;
// 使用资源
void use_resource() {
    printf("使用资源\n");
}
// 释放资源
void free_resource() {
    printf("释放资源\n");
}

void exit_handler(int signum) {
    if (signum == SIGINT) {
        printf("收到SIGINT(CTRL+C)信号，退出程序 \n");
        free_resource();
        exit(0);
    } else if (signum == SIGTERM) {
        printf("收到SIGTERM(kill)信号，退出程序\n");
        is_running = 0;
    }
}


int main(int argc, char const *argv[])
{
    // 注册信号监听（处理回调函数）
    signal(SIGINT, exit_handler); // CTRL+C
    signal(SIGTERM, exit_handler); // kill进程


    printf("------\n");
    use_resource();

    while(is_running) {
        printf("工作处理中。。。\n");
        sleep(1);
    }

    free_resource();
    
    return 0;
}
